#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<set>
using namespace std;

 struct ListNode {
     int val;
     ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};
 
class Solution {
public:
    bool hasCycle(ListNode* head) {
        set<ListNode*> s;
        ListNode* cur = head;
        while (cur)
        {
            if (!(s.insert(cur).second))
            {
                return true;
            }
            cur = cur->next;
        }
        return false;
    }
};
//ListNode* reverseBetween(ListNode* head, int m, int n) {
//    if (m == n)
//    {
//        return head;
//    }
//    ListNode p(0);
//    ListNode* phead = &p;
//    phead->next = head;
//    ListNode* cur = phead;
//    ListNode* next = nullptr;
//    ListNode* begin = nullptr;
//    ListNode* prev = nullptr;
//    ListNode* end = nullptr;
//    while (cur)
//    {
//        begin = cur;
//        cur = cur->next;
//        if (cur->val == m)
//        {
//            break;
//        }
//    }
//    cur = phead;
//    while (cur)
//    {
//        if (cur->val == n)
//        {
//            end = cur->next;
//            break;
//        }
//        cur = cur->next;
//    }
//    cur = begin->next->next;
//    prev = begin->next;
//    while (cur != end)
//    {
//        next = cur->next;
//        cur->next = prev;
//        prev = cur;
//        cur = next;
//    }
//    begin->next->next = next;
//    begin->next = prev;
//    return head;
//}
//};
int main()
{

	return 0;
}